package com.liang.manage.auth.facade.server;

import com.github.pagehelper.PageInfo;
import com.liang.manage.auth.facade.dto.role.RoleDTO;
import com.liang.manage.auth.facade.dto.role.RoleOutDTO;
import com.liang.manage.auth.facade.dto.role.RoleSearchDTO;
import com.liang.nansheng.common.auth.RoleSsoDTO;
import com.liang.nansheng.common.auth.UserSsoDTO;

import java.util.List;

public interface RoleService {
    /**
     * 根据id获取角色信息
     *
     * @param id
     * @return
     */
    RoleSsoDTO getSsoById(Integer id);

    /**
     * 新增角色
     *
     * @param roleDTO
     * @param currentUser
     * @return
     */
    Boolean create(RoleDTO roleDTO, UserSsoDTO currentUser);

    /**
     * 分页获取角色
     *
     * @param roleSearchDTO
     * @return
     */
    PageInfo<RoleDTO> getList(RoleSearchDTO roleSearchDTO);

    /**
     * 更新角色
     *
     * @param roleDTO
     * @param currentUser
     * @return
     */
    Boolean update(RoleDTO roleDTO, UserSsoDTO currentUser);

    /**
     * 删除角色
     *
     * @param ids
     * @param currentUser
     * @return
     */
    Boolean delete(List<Integer> ids, UserSsoDTO currentUser);

    /**
     * 通过角色id获取角色详情
     *
     * @param id
     * @return
     */
    RoleDTO getById(Integer id);

    /**
     * 通过角色code集合获取角色详情
     *
     * @param codes
     * @return
     */
    List<RoleDTO> getByCode(List<String> codes);

    /**
     * 角色判重
     *
     * @param code
     * @param roleId
     * @return
     */
    Boolean isValidRole(String code, Integer roleId);

    /**
     * 通过系统获取启用角色
     *
     * @param projectId
     * @return
     */
    List<RoleOutDTO> getEnableRoleByProjectId(Integer projectId);

    /**
     * 获取全部启用角色
     *
     * @return
     */
    List<RoleDTO> getEnableRoleAll();
}
